Mobile devices are desirable to users because of their portability and size. However, mobile devices typically have limited processing power and storage space as a result of their small size. Some applications have been designed to accommodate the processing and storage limits of mobile devices. Other applications, such as augmented reality, speech translation and face recognition, have extensive processing and storage requirements that cannot be met by a mobile device.
To make these processing resource intensive applications accessible to the users of mobile devices, some or all of the processing and/or storage can be offloaded to a server. The server typically resides in a large datacenter that is remote from the mobile device, but can provide tremendous amounts of processing power and storage capacity. After the server performs the processing for an application, the output of the application is transmitted to the mobile device and presented to the user. However, the user experience of using such applications is diminished by the latency between the mobile device and the data center. The applications do not promptly process the data due to the distances between the mobile device and the server. Similar issues arise for fixed devices, when the application requires a combination of high processing power and low latency. For example, many video gaming environments are markedly impacted by low processing power of the fixed devices and latency with servers.